///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Mozdzierz										 //
//	Date:		10/25/2014												 //
//	Purpose:	Define a particle system that controls the particle		 //
//				emitters and effectors within a single particle effect	 //
//																		 //
///////////////////////////////////////////////////////////////////////////

#ifndef _PARTICLE_SYSTEM_H
#define _PARTICLE_SYSTEM_H

#include "../Objects/GameObject.h"
#include <vector>

using namespace std;

class ParticleEmitter;
struct ParticleEffector;

class ParticleSystem : public GameObject
{
	friend class ParticleEmitter;

	vector<ParticleEmitter*> emitters;
	vector<ParticleEffector*> effectors;
	
public:
	ParticleSystem(void);
	virtual ~ParticleSystem(void);

	virtual void Update(float dt) override;
	virtual void Draw(void) override;

	void AddEmitter(ParticleEmitter* emitter);
	void AddEffector(ParticleEffector* effector) { effectors.push_back(effector); }
};

#endif